package com.engineering.elink.skilldao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.engineering.elink.co.HierCo;
import com.engineering.elink.co.SkillCo;
import com.engineering.elink.domain.VideoTopCategory;
import com.engineering.elink.domain.skill.Skill;
import com.engineering.elink.vo.EvaluateMeSkillVo;
import com.engineering.elink.vo.EvaluateSkillVo;
import com.engineering.elink.vo.SkillVo;
import com.zxy.core.co.BaseCo;

public interface SkillMapper {
    int deleteByPrimaryKey(Integer skillId);

    int insert(Skill record);

    int insertSelective(Skill record);

    Skill selectByPrimaryKey(Integer skillId);

    int updateByPrimaryKeySelective(Skill record);

    int updateByPrimaryKeyWithBLOBs(Skill record);

    int updateByPrimaryKey(Skill record);
    
    /**
     * 
     * selectList:(这里用一句话描述这个方法的作用). <br/> 
     * (这里描述这个方法适用条件 – 可选).<br/> 
     * (这里描述这个方法的执行流程 – 可选).<br/> 
     * (这里描述这个方法的使用方法 – 可选).<br/> 
     * (这里描述这个方法的注意事项 – 可选).<br/> 
     * 
     * @author zengxinyan 
     * @param co
     * @return 
     * @since JDK 1.8
     */
	List<SkillVo> selectList(@Param("co") SkillCo co);
	
	/**
	 * 
	 * selectCount:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	int selectCount(@Param("co") SkillCo co);
	
	/**
	 * 
	 * getDownLoadRank:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param count
	 * @return 
	 * @since JDK 1.8
	 */
	List<Skill> getDownLoadRank(@Param("co") BaseCo co);
	
	/**
	 * 
	 * selectInfo:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param skillId
	 * @return 
	 * @since JDK 1.8
	 */
	EvaluateSkillVo selectInfo(Integer skillId);
	
	/**
	 * 
	 * getMyEvaluate:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	List<EvaluateMeSkillVo> getMyEvaluate(@Param("co")BaseCo co,@Param("userId")String userId);
	
	/**
	 * 
	 * getEvaluateForMe:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	List<EvaluateMeSkillVo> getEvaluateForMe(@Param("co")BaseCo co,@Param("userId")String userId);
	
	/**
	 * 
	 * selectSkillByVideoId:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param videoId
	 * @return 
	 * @since JDK 1.8
	 */
	List<Skill> selectSkillByVideoId(Integer videoId);
	
	/**
	 * 
	 * getHierSkill:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	List<Skill> getHierSkill(@Param("co")HierCo co);
	
	/**
	 * 
	 * selectHierSkillCount:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	int selectHierSkillCount(@Param("co")HierCo co);
	
	  /**
     * 
     * 工程技能所有一级分类
     * 
     * selectSkillTopList:(这里用一句话描述这个方法的作用). <br/> 
     * (这里描述这个方法适用条件 – 可选).<br/> 
     * (这里描述这个方法的执行流程 – 可选).<br/> 
     * (这里描述这个方法的使用方法 – 可选).<br/> 
     * (这里描述这个方法的注意事项 – 可选).<br/> 
     * 
     * @author zengxinyan 
     * @return 
     * @since JDK 1.8
     */
    List<VideoTopCategory> selectSkillTopList(@Param("tcId")Integer tcId);
    
	List<Skill> getSameSkill(@Param("co") BaseCo co,@Param("skillId") Integer skillId);
	
	Integer countSameSkill(@Param("skillId") Integer skillId);
    
}